namespace Acme.ELeMe.SDK.Response;

public class OrderGetRespData
{
    /// <summary>
    /// 开发者应用id，返回为APPID
    /// </summary>
    public string? source { get; set; }
    /// <summary>
    /// 优惠信息
    /// </summary>
    public List<Discount>? discount { get; set; }
    /// <summary>
    /// 订单信息
    /// </summary>
    public Order? order { get; set; }
    /// <summary>
    /// 订单商品信息数组，数组内第一层数组为分袋（可忽略分袋，但会保留此层级），第二层数组为商品信息
    /// todo 这里类型不对
    /// </summary>
    public List<List<Product2>>? products { get; set; }
    /// <summary>
    /// 商户信息
    /// </summary>
    public Shop? shop { get; set; }
    /// <summary>
    /// 用户信息
    /// </summary>
    public User? user { get; set; }
}

/// <summary>
/// 优惠信息
/// </summary>
public class Discount
{
    public string? rule_id { get; set; }
    /// <summary>
    /// 商户承担金额，单位：分
    /// </summary>
    public int shop_rate { get; set; }
    /// <summary>
    /// 物流承担金额，单位：分
    /// </summary>
    public int logistics_rate { get; set; }
    /// <summary>
    /// 活动优惠总金额（1. 店铺维度活动：为该活动总优惠金额；2. 商品维度活动：为upc维度活动总优惠金额(公式 fee = save_price*activity_product_num)），如A和B商品都享受A活动，将会存在两个discount数组，总的活动优惠金额=A商品和B商品 discount数组中fee的相加总和；3. 各方承担优惠分摊公式：fee=shop_rate+ logistics_rate+ agent_rate+ baidu_rate+ user_rate）， 单位：分
    /// </summary>
    public int fee { get; set; }
    /// <summary>
    /// 平台生成的活动id
    /// </summary>
    public string? activity_id { get; set; }
    /// <summary>
    /// 代理商承担金额，单位：分
    /// </summary>
    public int agent_rate { get; set; }
    /// <summary>
    /// 平台承担金额，单位：分
    /// </summary>
    public int baidu_rate { get; set; }
    /// <summary>
    /// 优惠类型，请查看订单优惠类型 https://open-retail.ele.me/#/guide?topic=ntmt8f
    /// </summary>
    public string? type { get; set; }
    /// <summary>
    /// 合作方活动ID
    /// </summary>
    public string? custom_activity_id { get; set; }
    /// <summary>
    /// 优惠描述
    /// </summary>
    public string? desc { get; set; }
    /// <summary>
    /// 享受活动的商品信息(UPC维度)，如活动为店铺活动此参数不返回
    /// </summary>
    public List<Product>? products { get; set; }
    /// <summary>
    /// 用户承担金额，单位：分
    /// </summary>
    public int user_rate { get; set; }
    /// <summary>
    /// 红包/劵id
    /// </summary>
    public string? coupon_id { get; set; }
}

public class Product
{
    /// <summary>
    /// 活动id
    /// </summary>
    public string? activity_id { get; set; }
    /// <summary>
    /// 参与该活动商品数量(upc维度)
    /// </summary>
    public int activity_product_num { get; set; }
    /// <summary>
    /// 平台生成的商品ID，同商品的sku_id
    /// </summary>
    public string? baidu_product_id { get; set; }
    /// <summary>
    /// 单商品优惠后金额，单位：分，计算公式：now_price = orig_price - save_price
    /// </summary>
    public int now_price { get; set; }
    /// <summary>
    /// 单商品原始金额，单位：分
    /// </summary>
    public int orig_price { get; set; }
    /// <summary>
    /// 单商品优惠金额，单位：分
    /// </summary>
    public int save_price { get; set; }
}

public class Order
{
    /// <summary>
    /// 骑手到店时间
    /// </summary>
    public long atshop_time { get; set; }
    /// <summary>
    /// 取货类型，枚举值：0-外卖到家，1-用户到店自提
    /// </summary>
    public string? business_type { get; set; }
    /// <summary>
    /// 订单取消时间
    /// </summary>
    public string? cancel_time { get; set; }
    /// <summary>
    /// 冷链费用，单位：分
    /// </summary>
    public long cold_box_fee { get; set; }
    /// <summary>
    /// 佣金（费用包含佣金+履约服务费），单位：分
    /// </summary>
    public long commission { get; set; }
    /// <summary>
    /// 商家接单时间
    /// </summary>
    public long confirm_time { get; set; }
    /// <summary>
    /// 订单创建时间
    /// </summary>
    public long create_time { get; set; }
    /// <summary>
    /// 配送费均摊信息
    /// </summary>
    public DeliveryFee? delivery_fee { get; set; }
    /// <summary>
    /// 物流类型，枚举值： 1蜂鸟 2蜂鸟自配送 3蜂鸟众包 4饿了么众包 5蜂鸟配送 6饿了么自配送（商家自配送） 7全城送 8快递配送 9半日达 10 鸟潮小时达
    /// </summary>
    public string? delivery_party { get; set; }
    /// <summary>
    /// 骑士手机号
    /// </summary>
    public string? delivery_phone { get; set; }
    /// <summary>
    /// 骑士已取餐时间
    /// </summary>
    public long delivery_time { get; set; }
    /// <summary>
    /// 订单优惠总金额，单位：分
    /// </summary>
    public int discount_fee { get; set; }
    /// <summary>
    /// 是否降级。枚举值：1 是，0 否；极少数订单因网络或信息交互异常，导致订单部分字段（如订单金额）生成延迟，此时订单会被标记为“已降级”状态，不影响订单正常履约（无需拒单），开发者重新调用order.get订单详情接口获取完整订单数据即可。
    /// </summary>
    public long down_flag { get; set; }
    /// <summary>
    /// 订单ID，同order_id
    /// </summary>
    public string? eleme_order_id { get; set; }
    /// <summary>
    /// 送达时间类型，枚举值： 1 定时达， 2 限时达（错峰配送）
    /// </summary>
    public int expect_time_mode { get; set; }
    /// <summary>
    /// 订单附加信息，包含订单退款信息及鲜花订单祝福语信息
    /// </summary>
    public Ext? ext { get; set; }
    /// <summary>
    /// 订单完成时间
    /// </summary>
    public long finished_time { get; set; }
    /// <summary>
    /// 发票抬头
    /// </summary>
    public string? invoice_title { get; set; }
    /// <summary>
    /// 是否是冷链订单，枚举值： 1是， 0否
    /// </summary>
    public int is_cold_box_order { get; set; }
    /// <summary>
    /// 是否匿名订单，枚举值：1是， 0否
    /// </summary>
    public int is_private { get; set; }
    /// <summary>
    /// 用户期望最晚送达时间，1. 如用户选择的是预定送达时间点，此字段同send_time 2. 如用户选择的是预定送达时间片，此字段为最晚送达时间
    /// </summary>
    public long latest_send_time { get; set; }
    /// <summary>
    /// 用户所需餐具数量
    /// </summary>
    public string? meal_num { get; set; }
    /// <summary>
    /// 是否需要发票，枚举值： 1是 ，2否
    /// </summary>
    public int need_invoice { get; set; }
    /// <summary>
    /// 订单标识（注意：仅表示发生过部分退款，不代表部分退款成功。），枚举值：0 不是部分退款订单，1 部分退款订单
    /// </summary>
    public int order_flag { get; set; }
    /// <summary>
    /// 订单来源，枚举值： 1 饿了么星选APP， 2 饿了么APP
    /// </summary>
    public string? order_from { get; set; }
    /// <summary>
    /// 订单ID
    /// </summary>
    public string? order_id { get; set; }
    /// <summary>
    /// 订单当日流水号（门店维度），从1开始递增。注意：通过订单序号可以判断是否出现漏单情况
    /// </summary>
    public int order_index { get; set; }
    /// <summary>
    /// 包装费，单位：分
    /// </summary>
    public int package_fee { get; set; }
    /// <summary>
    /// 付款状态， 枚举值：1 未支付 ，2 已支付
    /// </summary>
    public int pay_status { get; set; }
    /// <summary>
    /// 付款类型 ，枚举值：1 线下支付，2 在线支付
    /// </summary>
    public int pay_type { get; set; }
    /// <summary>
    /// 用户到店自提取货码。
    /// </summary>
    public string? pick_up_code { get; set; }
    /// <summary>
    /// 商家拣货完成时间
    /// </summary>
    public long pickup_time { get; set; }
    /// <summary>
    /// 订单备注，无备注时返回0
    /// </summary>
    public string? remark { get; set; }
    /// <summary>
    /// 取消订单责任承担方，已废弃
    /// </summary>
    public string? responsible_party { get; set; }
    /// <summary>
    /// 订单配送费，单位：分
    /// </summary>
    public int send_fee { get; set; }
    /// <summary>
    /// 是否是预约单，枚举值： 1即时单，2预约单
    /// </summary>
    public int send_immediately { get; set; }
    /// <summary>
    /// 用户期望最早送达时间
    /// </summary>
    public long send_time { get; set; }
    /// <summary>
    /// 商户应收金额，单位：分
    /// </summary>
    public int shop_fee { get; set; }
    /// <summary>
    /// 订单状态，请查看订单状态表  https://open-retail.ele.me/#/guide?topic=ntmt8f
    /// </summary>
    public OrderStatus status { get; set; }
    /// <summary>
    /// 纳税人识别号
    /// </summary>
    public string? taxer_id { get; set; }
    /// <summary>
    /// 订单总金额，单位：分
    /// </summary>
    public int total_fee { get; set; }
    /// <summary>
    /// 用户实付金额，单位：分
    /// </summary>
    public int user_fee { get; set; }
    /// <summary>
    /// 是否处方药订单，枚举值： 0 不是 ，1 是
    /// </summary>
    public int is_prescription { get; set; }
    /// <summary>
    /// 第三方运力数据
    /// </summary>
    public ThirdPlInfo? third_pl_info { get; set; }
    /// <summary>
    /// 商户应收包装费，单位：分
    /// </summary>
    public int merchant_total_fee { get; set; }
    /// <summary>
    /// 承诺出餐时间
    /// </summary>
    public long promise_out_time { get; set; }
    /// <summary>
    /// 拣货时长 分钟
    /// </summary>
    public int picking_time { get; set; }
    /// <summary>
    /// 医保支付金额 ，单位：分
    /// </summary>
    public int medicare_fee { get; set; }
    /// <summary>
    /// C端取货处置方案
    /// </summary>
    public string? out_stock_option_text { get; set; }
    /// <summary>
    /// 贵品取货码
    /// </summary>
    public string? expensive_product_pickup_code { get; set; }
    /// <summary>
    /// 贵品签收码
    /// </summary>
    public string? expensive_product_receving_code { get; set; }
}

public class DeliveryFee
{
    /// <summary>
    /// 配送费平台承担金额，单位：分	
    /// </summary>
    public int platform_delivery_fee { get; set; }
    /// <summary>
    /// 配送费商户承担金额，单位：分
    /// </summary>
    public int shop_delivery_fee { get; set; }
    /// <summary>
    /// 配送费优惠金额，单位：分
    /// </summary>
    public int delivery_fee_discount { get; set; }
}

/// <summary>
/// 订单附加信息，包含订单退款信息及鲜花订单祝福语信息
/// </summary>
public class Ext
{
    /// <summary>
    /// 订购人电话
    /// </summary>
    public string? giver_phone { get; set; }
    /// <summary>
    /// 祝福语
    /// </summary>
    public string? greeting { get; set; }
    /// <summary>
    /// 全单退状态（订单为全单退订单时会有此字段）10:发起申请,20:客服介入,30:客服拒绝,40:客服同意,50:商户拒绝,60:商户同意,70:申请失效
    /// </summary>
    public int online_cancel_status { get; set; }
    /// <summary>
    /// 部分退款标识,1商户发起 2用户发起
    /// </summary>
    public int part_refund { get; set; }
    /// <summary>
    /// 部分退状态（订单为部分退订单时会有此字段）10表示商家/用户发起部分退款申请 20表示部分退款成功 30用户申请仲裁,客服介入 40表示部分退款失败 50表示商家拒绝用户发起的部分退款申请
    /// </summary>
    public int part_refund_status { get; set; }
    /// <summary>
    /// 淘系订单标识,0非淘系订单 1淘系订单
    /// </summary>
    public int taoxi_flag { get; set; }
    /// <summary>
    /// 1表示订单完成前用户全单取消申请流程，2表示订单完成后用户全单退款申请流程
    /// </summary>
    public int user_cancel { get; set; }
}

/// <summary>
/// 第三方运力数据
/// </summary>
public class ThirdPlInfo
{
    /// <summary>
    /// 拣货码
    /// </summary>
    public string? pick_up_code { get; set; }
    /// <summary>
    /// 令牌
    /// </summary>
    public string? token { get; set; }
    /// <summary>
    /// 最晚拣货时间
    /// </summary>
    public long merchant_pick_time { get; set; }
}

public class Product2
{
    /// <summary>
    /// 平台生成的活动id，已废弃，不返回
    /// </summary>
    public string? activity_id { get; set; }
    /// <summary>
    /// 平台生成的商品ID，同商品的sku_id
    /// </summary>
    public string? baidu_product_id { get; set; }
    /// <summary>
    /// 合作方商品ID;未设置时为空;同商品的custom_sku_id
    /// </summary>
    public string? custom_sku_id { get; set; }
    /// <summary>
    /// 赠品关联的主品的子订单 ID List，代表主品unique_id，格式： ["id1","id2”,……]
    /// </summary>
    public string[]? gm_ids { get; set; }
    /// <summary>
    /// 是否为赠品；1 是赠品，0或null 不是赠品
    /// </summary>
    public int is_free_gift { get; set; }
    /// <summary>
    /// 商品包装数量
    /// </summary>
    public int package_amount { get; set; }
    /// <summary>
    /// 商品包装费，单位：分
    /// </summary>
    public int package_fee { get; set; }
    /// <summary>
    /// 商品包装费，单位：分
    /// </summary>
    public int package_price { get; set; }
    /// <summary>
    /// 处方药编号; 不存在时为空“”
    /// </summary>
    public string? prescription_id { get; set; }
    /// <summary>
    /// 商品数量
    /// </summary>
    public int product_amount { get; set; }
    /// <summary>
    /// 商品属性和加工服务
    /// </summary>
    public List<ProductFeature>? product_features { get; set; }
    /// <summary>
    /// 商品总价，单位：分
    /// </summary>
    public int product_fee { get; set; }
    /// <summary>
    /// 商品名称
    /// </summary>
    public string? product_name { get; set; }
    /// <summary>
    /// 商品单价，单位：分
    /// </summary>
    public int product_price { get; set; }
    /// <summary>
    /// 订单中商品享受的优惠活动信息（upc维度）
    /// </summary>
    public ProductSubsidy? product_subsidy { get; set; }
    /// <summary>
    /// 商品类型，枚举值：1 单品 ，2 套餐 ，3 配料
    /// </summary>
    public int product_type { get; set; }
    /// <summary>
    /// 子订单ID，可区分同商品ID的不同属性；订单逆向操作必传字段
    /// </summary>
    public string? sub_biz_order_id { get; set; }
    /// <summary>
    /// 配送类型，枚举值：0代表普通配送，1代表冷链配送
    /// </summary>
    public int supply_type { get; set; }
    /// <summary>
    /// 订单中商品总金额，单位：分
    /// </summary>
    public int total_fee { get; set; }
    /// <summary>
    /// 商品总重量，单位：克
    /// </summary>
    public int total_weight { get; set; }
    /// <summary>
    /// 商品upc
    /// </summary>
    public string? upc { get; set; }
    /// <summary>
    /// 是否是称重品。枚举值：2 非称重品，1和3 称重品
    /// </summary>
    public int weight_type { get; set; }
    /// <summary>
    /// 多规格属性信息
    /// </summary>
    public List<Property>? properties { get; set; }
    /// <summary>
    /// 多规格合作方商品skuId
    /// </summary>
    public string? customSkuSpecId { get; set; }
}

/// <summary>
/// 商品属性和加工服务
/// </summary>
public class ProductFeature
{
    /// <summary>
    /// ID
    /// </summary>
    public long baidu_feature_id { get; set; }
    /// <summary>
    /// 名称，1. 商品属性展示商品属性名称 2. 加工服务展示为固定值“加工类型”
    /// </summary>
    public string? name { get; set; }
    /// <summary>
    /// 属性/加工类型
    /// </summary>
    public string? option { get; set; }
}

public class ProductSubsidy
{
    //代理商承担金额，单位：分
    public int agent_rate { get; set; }
    /// <summary>
    /// 平台承担金额，单位：分
    /// </summary>
    public int baidu_rate { get; set; }
    /// <summary>
    /// 商品总优惠金额，单位：分，计算公式：discount= agent_rate+baidu_rate+logistics_rate+shop_rate+user_rate
    /// </summary>
    public int discount { get; set; }
    /// <summary>
    /// 订单中商品享受的优惠活动信息明细（upc维度）
    /// </summary>
    public List<DiscountDetail>? discount_detail { get; set; }
    /// <summary>
    /// 物流承担金额，单位：分
    /// </summary>
    public int logistics_rate { get; set; }
    /// <summary>
    /// 商户承担金额，单位：分
    /// </summary>
    public int shop_rate { get; set; }
    /// <summary>
    /// 用户承担金额，单位：分
    /// </summary>
    public int user_rate { get; set; }
}

public class DiscountDetail
{
    /// <summary>
    /// 商户承担金额，单位：分
    /// </summary>
    public int shop_rate { get; set; }
    /// <summary>
    /// 商品参与活动id
    /// </summary>
    public string? activity_id { get; set; }
    /// <summary>
    /// 平台承担金额，单位：分
    /// </summary>
    public int baidu_rate { get; set; }
    /// <summary>
    /// 订单优惠类型 https://open-retail.ele.me/#/guide?topic=ntmt8f
    /// </summary>
    public string? type { get; set; }
    /// <summary>
    /// 合作方活动ID
    /// </summary>
    public string? custom_activity_id { get; set; }
    /// <summary>
    /// 红包/券id
    /// </summary>
    public string? coupon_id { get; set; }
}

/// <summary>
/// 多规格属性信息
/// </summary>
public class Property
{
    public string? name { get; set; }
    public string? value { get; set; }
}

/// <summary>
/// 商户信息
/// </summary>
public class Shop
{
    /// <summary>
    /// 平台门店ID
    /// </summary>
    public string? baidu_shop_id { get; set; }
    /// <summary>
    /// 合作方门店ID
    /// </summary>
    public string? id { get; set; }
    /// <summary>
    /// 门店名称
    /// </summary>
    public string? name { get; set; }
}

public class User
{
    /// <summary>
    /// 客户地址的百度经纬度
    /// </summary>
    public Coord? coord { get; set; }
    /// <summary>
    /// 客户送货地址
    /// </summary>
    public string? address { get; set; }
    /// <summary>
    /// 顾客性别，枚举值： 1-男 ，2-女 ，0-未知
    /// </summary>
    public string? gender { get; set; }
    /// <summary>
    /// 客户所在省份
    /// </summary>
    public string? province { get; set; }
    /// <summary>
    /// 客户所在城市
    /// </summary>
    public string? city { get; set; }
    /// <summary>
    /// 客户电话，1. 若匿名订单会返回隐私小号格式号码 2. 订单完结3小时到48小时内此字段将展示隐私小号 3. 隐私小号使用说明见支持中心-常见问题
    /// </summary>
    public string? phone { get; set; }
    /// <summary>
    /// 客户ID，用户唯一id
    /// </summary>
    public string? user_id { get; set; }
    /// <summary>
    /// 客户隐藏电话，格式：132****8090
    /// </summary>
    public string? privacy_phone { get; set; }
    /// <summary>
    /// 客户所在区
    /// </summary>
    public string? district { get; set; }
    /// <summary>
    /// 客户名称
    /// </summary>
    public string? name { get; set; }
    /// <summary>
    /// 客户地址的高德经纬度
    /// </summary>
    public CoordAmap? coord_amap { get; set; }
    /// <summary>
    /// 精确地址
    /// </summary>
    public string? accurate_address { get; set; }
    /// <summary>
    /// 备用联系人电话 1. 若匿名订单会返回隐私小号格式号码 2. 订单完结3小时到48小时内此字段将展示隐私小号 3. 隐私小号使用说明见支持中心-常见问题
    /// </summary>
    public string? backupPhone { get; set; }
    ///	备用联系人隐藏电话，格式：132****8090
    public string? backupPrivacyPhone { get; set; }
}

/// <summary>
/// 客户地址的百度经纬度
/// </summary>
public class Coord
{
    /// <summary>
    /// 送货地址百度纬度
    /// </summary>
    public string? latitude { get; set; }
    /// <summary>
    /// 送货地址百度经度
    /// </summary>
    public string? longitude { get; set; }
}

/// <summary>
/// 客户地址的高德经纬度
/// </summary>
public class CoordAmap
{
    /// <summary>
    /// 送货地址高德纬度
    /// </summary>
    public string? latitude { get; set; }
    /// <summary>
    /// 送货地址高德经度
    /// </summary>
    public string? longitude { get; set; }
}